#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,m,head[2005],d[2005],vis[2005],x1,y,tot,h[2005],z,cnt=0;
queue<int> q;
struct S{
	int v,w,nxt;
}s[4005];
void add(int u1,int v1,int w1){
	tot++;s[tot].v=v1;s[tot].w=w1;s[tot].nxt=head[u1];head[u1]=tot;
}
void spfa(){
	memset(d,0x3f,sizeof(d));
	memset(vis,0,sizeof(vis));
	memset(h,0,sizeof(h));
	while(!q.empty()) q.pop();
	d[1]=0;vis[1]=1;q.push(1);
	while(!q.empty()){
		int x=q.front();q.pop();
		vis[x]=0;
		for(int i=head[x];i;i=s[i].nxt){
			if(d[s[i].v]>d[x]+s[i].w){
				d[s[i].v]=d[x]+s[i].w;
				h[s[i].v]=h[x]+1;
				cout<<d[s[i].v]<<" "<<s[i].v<<" "<<h[s[i].v]<<endl;
				if(h[s[i].v]>=n){
					cnt=1;return;
				}
				if(!vis[s[i].v]){
					q.push(s[i].v);
					vis[s[i].v]=1;
				}
			}
		}
	}
	return;
}
signed main(){
	scanf("%d",&t);
	while(t--){
		memset(&s,0,sizeof(S));
		tot=0;cnt=0;
		scanf("%d%d",&n,&m);
		for(int j=1;j<=m;j++){
			scanf("%d%d%d",&x1,&y,&z);
			printf("%d %d %d",x1,y,z);
			if(z>=0){
				add(y,x1,z);
			}
			add(x1,y,z);
		}
		spfa();
		if(cnt==1) puts("YES\n");
		else puts("NO\n");
	}
	return 0;
}
